package global

import (
	"fmt"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"os"
	"path/filepath"
)

func InitLogFile() *zap.Logger {

	// 如果未开启日志，则创建日志文件
	if CONFIG.Server.LogStatus == false {
		return nil
	}

	logDir := CONFIG.Server.LogPath
	fileName := "server.log"

	// 创建日志目录
	err := os.MkdirAll(logDir, os.ModePerm)
	if err != nil {
		fmt.Println("Error creating log directory:", err)
		os.Exit(1)
	}

	logFilePath := filepath.Join(logDir, fileName)

	encoderConfig := zap.NewProductionEncoderConfig()
	encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder

	// 配置日志输出
	encoder := zapcore.NewJSONEncoder(encoderConfig)
	core := zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), zapcore.DebugLevel)

	// 创建日志文件
	file, err := os.OpenFile(logFilePath, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
	if err != nil {
		fmt.Println("Error opening log file:", err)
		os.Exit(1)
	}

	// 配置日志文件输出
	fileWriter := zapcore.AddSync(file)
	fileCore := zapcore.NewCore(encoder, fileWriter, zapcore.DebugLevel)

	// 同事输出到控制台和文件
	core = zapcore.NewTee(core, fileCore)
	return zap.New(core, zap.AddCaller())
}
